In recent years, the use of wireless communication networks as a system for facilitating communication between various types of mobile devices, such as portable computers, personal digital assistants (“PDAs”), cellular telephones and the like, has gained widespread acceptance. In particular, there has been a growing trend at developing infrastructureless network technologies to facilitate direct communication between two or more wireless devices. When two or more devices directly communicate without any infrastructure, they form a type of local area network (“LAN”) known as an ad-hoc network. Due to the mobility of the devices involved, the topology of ad-hoc networks is typically subject to rapid changes, such as when devices are added, removed or moved from one location to another within the network.
Wireless devices may form or become part of an ad-hoc network when they are located within the range of at least one other wireless device. Each device (or “node”) in the ad-hoc network may serve as a client, host, or router. Currently, a number of wireless technologies exist for supporting ad-hoc networks, including ones using standard protocols such as Bluetooth, Infrared Data Association (“IrDA”), and IEEE 802.11x. Ad-hoc networks are not limited to wireless devices and some or all of the devices in an ad-hoc network may use temporary wired connections that allow these devices to temporarily be part of the network, such as for the duration of a communications session.
Ad-hoc networks face a number of challenges. These challenges can be roughly divided into two main categories: physical layer issues (such as physical connectivity problems due to weak signal strength, etc.) and network layer issues (including network management and routing difficulties). Although physical layer connectivity is, of course, a prerequisite for network connectivity, recent improvements in physical connectivity have not been matched by improvements in network management and routing techniques.
For example, according to one conventional routing approach, every node in a network receives, through a process known as “flooding”, enough information to build a complete map of the network. During flooding, each switching node (i.e., nodes that are configured to forward data packets) forwards a link-state packet (“LSP”) to all nodes to which it is directly connected. Typically, link-state packets contain data detailing the ID of the node that created the LSP and a list of directly connected neighbors of that node.
Each switching node that receives this LSP then forwards the packet to its directly connected neighbors, which then forwards the same packet to its directly connected neighbors, and so on until the LSP has been forwarded to each node within the network. Once a given node has received an LSP from every other node in the network, it is able to compute a complete map of the topology of the network. Each node in the network is thus able to determine, based on the computed map, the least-cost path to any destination node in the network. Changes in network topology are accounted for by requiring each switching node to transmit a link-state update (“LSU”) upon any perceived change in network topology (i.e., a neighbor of the switching node is disconnected or added). Typically, link-state updates contain data detailing the ID of the node that created the LSU and a list of directly connected neighbors of that node.
Although relatively simple in its implementation, this conventional routing approach (commonly known as “link-state” routing) suffers from a number of limitations, particularly when adapted for use in wireless ad-hoc networks. For example, in link-state routing, every node must have and store sufficient information to compute the location of every other node in the network. More particularly, because ad-hoc networks typically have flat address space (i.e., the addresses of each node do not identify a hierarchical relationship due to lack of central administration and constant motion), the routing table for each node in such networks must contain information about each and every other node. As the number of nodes connected to the network increases, the corresponding number of link-state packets and updates that must be transmitted, received and stored by each node also increases. When the amount of link-state traffic exceeds the physical capabilities of the hardware of the network, the network may become unreliable or fail. Thus, unacceptable increases in the amount of link-state data and traffic serve to limit the network's scalability potential by inhibiting the number of nodes that may feasibly connect to the network.
In addition, because switching nodes in a link-state routing scheme are required to transmit LSUs upon every perceived change in network topology, an inordinate number of LSUs may be propagated within the network due to the relatively high frequency with which topology changes occur in ad-hoc networks. This results in large amounts of routing traffic overhead being transmitted within the network, which may further limit the workable size of the ad-hoc network and lead to degradation of network performance and reliability. Given that wireless communications within a network may often be at lower bandwidths than wired communications, reducing overhead to maximize the total available bandwidth for substantive communications is highly desirable.
According to another approach, instead of allowing every link-state update generated by each switching node to fully flood the entire network, global LSUs (i.e., LSUs that are allowed to propagate throughout the entire network) are transmitted only on a periodic basis. Global LSUs typically represent LSUs having a time-to-live value (“TTL”) set to infinity.
In conventional routing schemes, the TTL value of a data packet is a value contained in a packet header that indicates through how many nodes the packet should be allowed to traverse before being discarded or returned. Nodes in receipt of packets having a TTL value typically decrement the TTL value of the packet by 1 prior to flooding this packet to its neighbors. When the TTL value of the packet reaches 0, the packet is deleted. TTL values thus generally ensure that out-of-date link-state information is eventually removed from a network. Accordingly, by setting the TTL value of a global LSU to infinity, global LSUs are allowed to propagate throughout the entire network
According to this alternative approach to traditional link-state routing schemes, also known as “hazy-sighted” routing, each switching node is required to transmit a global LSU during initial configuration of the network, thereby providing each node within the network with sufficient information to compute a complete map of the entire network. Thereafter, global LSUs are only transmitted upon the expiration of a period of time specified by a periodic timer. Between global LSU transmissions, non-global LSUs are transmitted. Typically, the TTL value of each non-global LSU is set to a value smaller than that of the size of the network so that they do not propagate throughout the entire network. Upon expiration of the period of time specified by the periodic timer, each switching node again transmits a global LSU.
Because global LSUs are only transmitted within this hazy-sighted routing scheme on a periodic basis, during certain periods of time various nodes within a network implementing this routing protocol may lack up-to-date information regarding the exact location of every other node in the network. Thus, although nodes may have received sufficient information to compute an up-to-date map of their surrounding region (as determined by the TTL value of the most recent non-global LSU), their understanding of the location of or best path to distant nodes (i.e., nodes outside of their horizon line) may be based on out-of-date information (as determined by the most recent global LSU).
Hazy-sighted routing thus allows information about distant nodes to be inexact, such that a switching node always knows how to get a packet closer to a destination node, but may not always know the details of the best path to this destination node. Once a transmitted packet has been forwarded to a node that is closer to the destination node, more information about this path is provided, and so on at the next closest node until the packet eventually arrives at the destination node. Inasmuch as the number of topological changes that might occur within the time specified by the periodic timer is likely to be greater than one, this periodic timing limitation serves to reduce the number of LSUs generated, thereby limiting the amount of traffic overhead promulgated within the network. Hazy-sighted routing thus sacrifices routing accuracy in favor of reduced link-state overhead.
As with the traditional link-state approach to routing described above, the so-called “hazy-sighted” routing approach suffers from similar scalability, performance and reliability concerns. For example, it is still necessary for the routing table to contain information about each and every node. Global LSUs are essential to providing such information. Thus, as discussed above, the use of global LSUs limits scalability, network performance and reliability.
In addition, although the amount of routing accuracy sacrificed by hazy-sighted routing schemes to achieve the desired reduction in link-state traffic overhead is an acceptable trade-off for networks composed of low-capacity links (such as ad-hoc networks formed exclusively of wireless connections), this tradeoff is problematic in networks composed at least in part of high-capacity links. For example, in a network composed of numerous high-capacity links, the amount of bandwidth that is saved by reducing the TTL of an LSU is relatively minor in comparison with the total bandwidth of each high-capacity link in the network. Thus, when hazy-sighted routing schemes are adapted for use in connection with networks composed at least in part of high-capacity links, the relatively minor traffic overhead efficiencies that are achieved are generally outweighed by the resulting losses in routing accuracy.
Accordingly, there exists a need for a system and method capable of enabling nodes within an ad-hoc network to seamlessly communicate with adjacent nodes, distant nodes and a wider network (such as the Internet) so long as physical connectivity is maintained with at least one other node. There also exists a need for a system and method capable of scaling beyond the size limitations of traditional ad-hoc networks, while minimizing any potential decreases in network performance and reliability. In addition, there exists a need for a system and method capable of adjusting the TTL of a packet based on the capacity of the links over which this packet will travel. Preferably, such a system and method would provide significant improvements in scalability, application performance and overall network connectivity.